import sys
import os

# 添加项目根目录到系统路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from database import Database

class UserQuery:
    def __init__(self):
        self.db = Database()
    
    def query_all_users(self):
        """
        查询所有用户信息
        
        返回:
            list: 用户信息列表
        """
        try:
            self.db.connect()
            self.db.cursor.execute(
                "SELECT id, username, role, name, contact, status FROM user ORDER BY id"
            )
            users = self.db.cursor.fetchall()
            return users
        except Exception as e:
            print(f"错误：查询用户时发生错误 - {str(e)}")
            return []
        finally:
            self.db.close()
    
    def query_user_by_id(self, user_id):
        """
        根据ID查询用户信息
        
        参数:
            user_id (int): 用户ID
            
        返回:
            tuple: 用户信息
        """
        try:
            self.db.connect()
            self.db.cursor.execute(
                "SELECT id, username, role, name, contact, status FROM user WHERE id = ?",
                (user_id,)
            )
            user = self.db.cursor.fetchone()
            return user
        except Exception as e:
            print(f"错误：查询用户时发生错误 - {str(e)}")
            return None
        finally:
            self.db.close()
    
    def query_user_by_username(self, username):
        """
        根据用户名查询用户信息
        
        参数:
            username (str): 用户名
            
        返回:
            tuple: 用户信息
        """
        try:
            self.db.connect()
            self.db.cursor.execute(
                "SELECT id, username, role, name, contact, status FROM user WHERE username = ?",
                (username,)
            )
            user = self.db.cursor.fetchone()
            return user
        except Exception as e:
            print(f"错误：查询用户时发生错误 - {str(e)}")
            return None
        finally:
            self.db.close()
    
    def query_users_by_role(self, role):
        """
        根据角色查询用户信息
        
        参数:
            role (str): 用户角色
            
        返回:
            list: 用户信息列表
        """
        try:
            self.db.connect()
            self.db.cursor.execute(
                "SELECT id, username, role, name, contact, status FROM user WHERE role = ? ORDER BY id",
                (role,)
            )
            users = self.db.cursor.fetchall()
            return users
        except Exception as e:
            print(f"错误：查询用户时发生错误 - {str(e)}")
            return []
        finally:
            self.db.close()

# 如果直接运行此文件，提供命令行界面
if __name__ == "__main__":
    query = UserQuery()
    
    print("===== 用户查询 =====")
    print("1. 查询所有用户")
    print("2. 根据ID查询用户")
    print("3. 根据用户名查询用户")
    print("4. 根据角色查询用户")
    
    choice = input("请选择查询方式 (1-4): ")
    
    if choice == '1':
        users = query.query_all_users()
        if users:
            print("\nID\t用户名\t角色\t姓名\t联系方式\t状态")
            for user in users:
                print(f"{user[0]}\t{user[1]}\t{user[2]}\t{user[3] or '-'}\t{user[4] or '-'}\t{user[5]}")
        else:
            print("没有找到任何用户信息")
    
    elif choice == '2':
        try:
            user_id = int(input("请输入用户ID: "))
            user = query.query_user_by_id(user_id)
            
            if user:
                print("\nID\t用户名\t角色\t姓名\t联系方式\t状态")
                print(f"{user[0]}\t{user[1]}\t{user[2]}\t{user[3] or '-'}\t{user[4] or '-'}\t{user[5]}")
            else:
                print(f"没有找到ID为 {user_id} 的用户")
        except ValueError:
            print("错误：用户ID必须是数字")
    
    elif choice == '3':
        username = input("请输入用户名: ")
        user = query.query_user_by_username(username)
        
        if user:
            print("\nID\t用户名\t角色\t姓名\t联系方式\t状态")
            print(f"{user[0]}\t{user[1]}\t{user[2]}\t{user[3] or '-'}\t{user[4] or '-'}\t{user[5]}")
        else:
            print(f"没有找到用户名为 {username} 的用户")
    
    elif choice == '4':
        print("\n角色选项:")
        print("1. admin - 管理员")
        print("2. manager - 经理")
        print("3. staff - 普通员工")
        role_choice = input("请选择角色 (1-3): ")
        
        role = None
        if role_choice == '1':
            role = 'admin'
        elif role_choice == '2':
            role = 'manager'
        elif role_choice == '3':
            role = 'staff'
        else:
            print("错误：无效的角色选择")
            sys.exit(1)
        
        users = query.query_users_by_role(role)
        if users:
            print(f"\n角色为 {role} 的用户:")
            print("ID\t用户名\t角色\t姓名\t联系方式\t状态")
            for user in users:
                print(f"{user[0]}\t{user[1]}\t{user[2]}\t{user[3] or '-'}\t{user[4] or '-'}\t{user[5]}")
        else:
            print(f"没有找到角色为 {role} 的用户")
    
    else:
        print("无效的选择")